iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0

類 Class

類是Swift結構體中更加高級的一種資料類型,程式開發中許多較為複雜的場景都是透過類來實例的,簡單說,類是程式世界中的抽象模擬,使用類可以來模擬各種對象,以FPS遊戲為例,遊戲中的武器、主角、道具、敵人,都是類。
Swfit中類是使用class這個關鍵字來宣告,我們使用類來模擬汽車模型。

class ClassCar {
    var price: Int
    var brand: String
    var petrol: Int
    func drive() {
        if petrol > 0{
            petrol -= 1
            print("drive 10 mile")
        }
    }
    func addPetrol() {
        petrol += 10
        print("plus 10")
    }
    init(price :Int, brand: String, petrol: Int){
        self.price = price
        self.brand = brand
        self.petrol = petrol
    }
}

分析上面建立的classCar可以發現,類與結構的建立屬性的程式碼基本一樣,差別在於結構體中開發者不需要提供構造方法,結構體會根據屬性來自動生成一個構造方法,而類則是需要開發者自己提供構造方法,在 init() 構造方法中,需要完成對類中所有屬性的賦值操作。

// 建立ClassCar實例
var car = Car(price: 100000, brand: "BMW", pertorl: 10)
// 訪問屬性
print("\(car.brand) + \(car.price) + \(car.pertorl)")
// 呼叫方法
for _ in 0...10 {
    if car.pertorl == 0 {
        car.addPetrol()
    }else{
        // 進行行走路線行為
        car.drive()
    }
}

可以看出類與結構體一樣,也是透過點語法來完成屬性方法的呼叫訪問,和結構體不同的是,類是引用類型,對實例進行資料傳遞的時後不會產生複製行為,因此如果要將類實例傳遞給新的變數,修改新的變數則會影響到原始變數。

// 建立ClassCar實例
var car = Car(price: 100000, brand: "BMW", pertorl: 10)
// 訪問屬性
print("(car.brand) + (car.price) + (car.pertorl)")
// 建立另一個變數來進行值的傳遞
var car2 = car
car2.price = 50000
print("Price: (car.price) Price: (car2.price)")
// 將印出 Price: 50000 Price: 50000

接下來,是屬性的介紹


上一篇
Day17 Swift 結構
下一篇
Day19 Swift 屬性
系列文
初入Swift新手村的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言